import { Base64 } from 'js-base64';
import JSEncrypt from 'jsencrypt';

// RSA 公钥 - 从铂时项目复制
const RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQChEuUwaHR5OsJ8EM3/8UwJCngMGwufVnAerVGMz6CLg7q9NDn9dUnr83suKZcCHKUpIvzBqJ05vy3zrYGuS1D4cCCIZiZEzN9I1AfllD1fKmcnz1tL56NWZ4HMfhjesAkjxa69Xmh6qYbIFanqHFkqNje+gZ5hDA8Om1/diT/NzwIDAQAB';

/**
 * 登录密码加密
 * 使用 Base64 + RSA 双重加密
 * @param {string} password - 原始密码
 * @returns {string} 加密后的密码
 */
export function encryptPassword(password) {
  if (!password) {
    return '';
  }

  try {
    // 1. Base64 加密密码
    const base64Encoded = Base64.encode(password);
    
    // 2. RSA 加密
    const encryptor = new JSEncrypt();
    encryptor.setPublicKey(RSA_PUBLIC_KEY);
    const encrypted = encryptor.encrypt(base64Encoded);
    
    return encrypted || '';
  } catch (error) {
    console.error('密码加密失败:', error);
    return '';
  }
}

/**
 * 通用数据加密方法（使用存储的token作为公钥）
 * @param {string} data - 需要加密的数据
 * @returns {string} 加密后的数据
 */
export function encryptWithToken(data) {
  if (!data) {
    return '';
  }

  try {
    // 1. Base64 加密
    const base64Encoded = Base64.encode(data);
    
    // 2. 使用存储的token作为公钥进行RSA加密
    const token = uni.getStorageSync('token');
    if (!token) {
      console.warn('未找到token，无法加密');
      return '';
    }
    
    const encryptor = new JSEncrypt();
    encryptor.setPublicKey(token);
    const encrypted = encryptor.encrypt(base64Encoded);
    
    return encrypted || '';
  } catch (error) {
    console.error('数据加密失败:', error);
    return '';
  }
}

